Computing devices often rely on the accuracy of data being transmitted between different components within the computing device. One device, known as a transmitting (Tx) device, may transmit data to another device known as a receiving (Rx) device. The Tx device and the Rx device may reside on a single device (e.g., a backplane, a motherboard, a circuit board, etc.) or the Tx device and the Rx device may reside on multiple devices. The Tx device and the Rx device may send data to each other via a connecting device, such as serial or parallel bus.
To ensure that the transmitted data has no errors or has a quantity of errors less than a threshold, the Tx device may use a technique known as error correcting code (ECC) to determine whether the transmitted data includes any errors and also to correct the errors. One type of ECC technique is forward error correction (FEC). In ECC, the Tx device may, for example, add an amount of code (containing one or more bits) to the data prior to transmission. The Rx device may receive the transmitted data and may use a checksum technique to determine whether the added bits of information to the transmitted data are received in the same quantity and/or location as when transmitted by the Tx device. If the Rx device determines that one or more of the bits are not transmitted in the same order, or in the same quantity, as the bits encoded by the Tx device, the Rx device may determine that there is an error associated with the transmitted data. The Rx device, using ECC, may also correct the error.
In the event that two errors occur in the transmitted data, the ECC system may determine that the transmitted data is invalid which may result in the ECC system in failing the Tx device without any further analysis as to whether the Rx device or the connecting device are causing the error. If, on the other hand, the Rx device determines that the one or more bits are transmitted in the same order and/or in the same quantity as the bits encoded by the Tx device, the Rx device may determine that there is no error associated with the transmitted data.